package com.xzcedu.socket;

import java.io.*;
import java.net.InetAddress;
import java.net.Socket;

/**
 * @author 徐州城
 * @version 1.0
 * 使用字符流的方式
 * 1. 编写一个服务器 和一个客户端
 * 2. 服务端再 9999端口监听
 * 3. 客户端连接到服务端，发送 "Hello Sever" ，并接收服务端回发的 "Hello Client"，再退出
 * 4. 服务端接收到 客户端发送的信息，输出，并发送 "Hello Client"，再退出
 */
@SuppressWarnings("all")
public class SocketTCP03Client {
    public static void main(String[] args) throws IOException {

        //说明
        //1. 连接端口
        Socket socket = new Socket(InetAddress.getLocalHost(), 9999);
        //2. 获取 IO流对象
        OutputStream outputStream = socket.getOutputStream();
        BufferedWriter bufferedWriter = new BufferedWriter(new OutputStreamWriter(outputStream));
        bufferedWriter.write("Hello Sever 字符流");
        bufferedWriter.newLine();//插入一个换行符，表示写入的内容结束，注意，要求对方使用readLine()!!!!!
        bufferedWriter.flush();//如果使用字符流，需要手动刷新，否则数据不会写入数据通道


        //3. 接收服务端 回发的数据
        InputStream inputStream = socket.getInputStream();
        BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
        String s = bufferedReader.readLine();
        System.out.println(s);

        //关闭流 和 socket
        bufferedReader.close();//关闭外层流
        bufferedWriter.close();
        socket.close();

        System.out.println("客户端退出...");
    }
}
